
<!doctype html>
<html lang="zh" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
        <meta name="description" content="这里是网站描述">
      
      
        <meta name="author" content="948080782x@qq.com">
      
      
      
      
      
      <link rel="icon" href="assets/images/favicon.png">
      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.14">
    
    
      
        <title>Fastapi_Vue3_Admin在线文档</title>
      
    
    
      <link rel="stylesheet" href="assets/stylesheets/main.342714a4.min.css">
      
      


    
    
      
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
    <script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      

    
    
    
  </head>
  
  
    <body dir="ltr">
  
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#1014taotao" class="md-skip">
          跳转至
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

  

<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="页眉">
    <a href="index.html" title="Fastapi_Vue3_Admin在线文档" class="md-header__button md-logo" aria-label="Fastapi_Vue3_Admin在线文档" data-md-component="logo">
      
  
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            Fastapi_Vue3_Admin在线文档
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              帮助文档
            
          </span>
        </div>
      </div>
    </div>
    
    
      <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
    
    
    
      
      
        <label class="md-header__button md-icon" for="__search">
          
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
        </label>
        <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="查找">
        
        <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
          
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
        </button>
      </nav>
      
        <div class="md-search__suggest" data-md-component="search-suggest"></div>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            正在初始化搜索引擎
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
      
    
    
      <div class="md-header__source">
        <a href="https://github.com/1014TaoTao/fastapi_vue3_admin.git" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  </div>
  <div class="md-source__repository">
    fastapi_vue3_admin
  </div>
</a>
      </div>
    
  </nav>
  
    
      
<nav class="md-tabs" aria-label="标签" data-md-component="tabs">
  <div class="md-grid">
    <ul class="md-tabs__list">
      
        
  
  
  
    
  
  
    <li class="md-tabs__item md-tabs__item--active">
      <a href="index.html" class="md-tabs__link">
        
  
  
    
  
  帮助文档

      </a>
    </li>
  

      
    </ul>
  </div>
</nav>
    
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    


  


  

<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="导航栏" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="index.html" title="Fastapi_Vue3_Admin在线文档" class="md-nav__button md-logo" aria-label="Fastapi_Vue3_Admin在线文档" data-md-component="logo">
      
  
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>

    </a>
    Fastapi_Vue3_Admin在线文档
  </label>
  
    <div class="md-nav__source">
      <a href="https://github.com/1014TaoTao/fastapi_vue3_admin.git" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  </div>
  <div class="md-source__repository">
    fastapi_vue3_admin
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
  
  
    
  
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
      
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          
  
  
  <span class="md-ellipsis">
    帮助文档
    
  </span>
  

          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="index.html" class="md-nav__link md-nav__link--active">
        
  
  
  <span class="md-ellipsis">
    帮助文档
    
  </span>
  

      </a>
      
        

<nav class="md-nav md-nav--secondary" aria-label="目录">
  
  
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      目录
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#1014taotao" class="md-nav__link">
    <span class="md-ellipsis">
      📘 项目介绍（作者：@1014TaoTao）
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_1" class="md-nav__link">
    <span class="md-ellipsis">
      ✨ 核心亮点
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_2" class="md-nav__link">
    <span class="md-ellipsis">
      🛠️ 技术栈概览
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_3" class="md-nav__link">
    <span class="md-ellipsis">
      📌 内置模块
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_4" class="md-nav__link">
    <span class="md-ellipsis">
      🍪 演示环境
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_5" class="md-nav__link">
    <span class="md-ellipsis">
      👷 安装和使用
    </span>
  </a>
  
    <nav class="md-nav" aria-label="👷 安装和使用">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_6" class="md-nav__link">
    <span class="md-ellipsis">
      版本说明
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_7" class="md-nav__link">
    <span class="md-ellipsis">
      获取代码
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_8" class="md-nav__link">
    <span class="md-ellipsis">
      本地后端启动
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_9" class="md-nav__link">
    <span class="md-ellipsis">
      本地前端启动
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_10" class="md-nav__link">
    <span class="md-ellipsis">
      本地访问地址
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#docker" class="md-nav__link">
    <span class="md-ellipsis">
      docker 部署
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_11" class="md-nav__link">
    <span class="md-ellipsis">
      🔧 模块展示
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_12" class="md-nav__link">
    <span class="md-ellipsis">
      🙏 特别鸣谢
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_13" class="md-nav__link">
    <span class="md-ellipsis">
      🎨 社区
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#star" class="md-nav__link">
    <span class="md-ellipsis">
      ❤️ Star 支持我
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_14" class="md-nav__link">
    <span class="md-ellipsis">
      👀 访问统计
    </span>
  </a>
  
</li>
      
    </ul>
  
</nav>
      
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  


  
  


  <h1>帮助文档</h1>

<div align="center">
     <p align="center">
          <img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/logo.png" width="100"/> 
     </p>
     <h2 align="center">Fastapi-Vue3-Admin v2.0.0</h2>
     <h4 align="center">一套现代、开源、全栈融合的中后台快速开发平台，给个⭐️支持一下</h4>
     <p align="center">
          <a href="https://gitee.com/tao__tao/fastapi_vue3_admin.git" target="_blank">
               <img src="https://gitee.com/tao__tao/fastapi_vue3_admin/badge/star.svg?theme=dark" alt="Gitee Stars">
          </a>
          <a href="https://github.com/1014TaoTao/fastapi_vue3_admin.git" target="_blank">
               <img src="https://img.shields.io/github/stars/1014TaoTao/fastapi_vue3_admin?style=social" alt="GitHub Stars">
          </a>
          <a href="https://gitee.com/tao__tao/fastapi_vue3_admin/blob/master/LICENSE" target="_blank">
               <img src="https://img.shields.io/badge/License-MIT-orange" alt="License">
          </a>
          <img src="https://img.shields.io/badge/Python-≥3.10-blue"> 
          <img src="https://img.shields.io/badge/NodeJS-≥20.0-blue"> 
          <img src="https://img.shields.io/badge/MySQL-≥8.0-blue"> 
          <img src="https://img.shields.io/badge/Redis-≥7.0-blue"> 
          <img src="https://img.shields.io/badge/-HTML5-E34F26?style=flat-square&logo=html5&logoColor=white"/> 
          <img src="https://img.shields.io/badge/-CSS3-1572B6?style=flat-square&logo=css3"/> 
          <img src="https://img.shields.io/badge/-JavaScript-563D7C?style=flat-square&logo=bootstrap"/> 
     </p>
</div>

<hr />
<h2 id="1014taotao">📘 项目介绍（作者：@1014TaoTao）</h2>
<p><strong>Fastapi-Vue3-Admin</strong> 是一套 <strong>完全开源、高度模块化、技术先进的现代化快速开发平台</strong>，旨在帮助开发者高效搭建高质量的企业级中后台系统。该项目采用 <strong>前后端分离架构</strong>，融合 Python 后端框架 <code>FastAPI</code> 和前端主流框架 <code>Vue3</code> 实现多端统一开发，提供了一站式开箱即用的开发体验。</p>
<blockquote>
<p><strong>设计初心</strong>: 以模块化、松耦合为核心，追求丰富的功能模块、简洁易用的接口、详尽的开发文档和便捷的维护方式。通过统一框架和组件，降低技术选型成本，遵循开发规范和设计模式，构建强大的代码分层模型，搭配完善的本地中文化支持，专为团队和企业开发场景量身定制。</p>
</blockquote>
<pre><code class="language-sh">fastapi_vue3_admin
├─ backend        # 后端工程
├─ frontend       # 前端工程
├─ devops         # 部署工程
├─ docker-compose.yaml # 部署文件
├─ start.sh       # 一键部署脚本
├─ LICENSE        # 许可协议
|─ README.en.md   # 英文文档
└─ README.md      # 中文文档
</code></pre>
<hr />
<h2 id="_1">✨ 核心亮点</h2>
<table>
<thead>
<tr>
<th>特性</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>🔭 快速开发</td>
<td>一套完全开源的现代化快速开发平台，旨在帮助开发者高效搭建高质量的中后台系统。</td>
</tr>
<tr>
<td>🌐 全栈整合</td>
<td>前后端分离，融合 Python (FastAPI) + Vue3 多端开发</td>
</tr>
<tr>
<td>🧱 模块化设计</td>
<td>系统功能高度解耦，便于扩展和维护</td>
</tr>
<tr>
<td>⚡️ 高性能异步</td>
<td>使用 FastAPI 异步框架 + Redis 缓存优化接口响应速度</td>
</tr>
<tr>
<td>🔒 安全认证</td>
<td>支持 JWT OAuth2 认证机制，保障系统安全</td>
</tr>
<tr>
<td>📊 权限管理</td>
<td>RBAC 模型实现菜单、按钮、数据级别的细粒度权限控制</td>
</tr>
<tr>
<td>🚀 快速部署</td>
<td>支持 Docker/Docker Compose/Nginx 一键部署</td>
</tr>
<tr>
<td>📄 开发友好</td>
<td>提供完善的中文文档 + 中文化界面 + 可视化工具链，降低学习成本</td>
</tr>
<tr>
<td>🚀 快速接入</td>
<td>基于 Vue3、Vite5、Pinia、Ant Design Vue 等主流前端技术栈，开箱即用。</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="_2">🛠️ 技术栈概览</h2>
<table>
<thead>
<tr>
<th>类型</th>
<th>技术选型</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>后端框架</td>
<td>FastAPI / Uvicorn / Pydantic 2.0 / Alembic</td>
<td>现代、高性能的异步框架，强制类型约束，数据迁移。</td>
</tr>
<tr>
<td>ORM</td>
<td>SQLAlchemy 2.0</td>
<td>强大的 ORM 库。</td>
</tr>
<tr>
<td>定时任务</td>
<td>APScheduler</td>
<td>轻松实现定时任务。</td>
</tr>
<tr>
<td>权限认证</td>
<td>PyJWT</td>
<td>实现 JWT 认证。</td>
</tr>
<tr>
<td>前端框架</td>
<td>Vue3 / Vite5 / Pinia / TypeScript</td>
<td>快速开发 Vue3 应用。</td>
</tr>
<tr>
<td>UI 库</td>
<td>Ant Design Vue</td>
<td>快速开发美观的 UI 组件。</td>
</tr>
<tr>
<td>数据库</td>
<td>MySQL / MongoDB</td>
<td>强大的数据库。</td>
</tr>
<tr>
<td>缓存</td>
<td>Redis</td>
<td>强大的缓存数据库。</td>
</tr>
<tr>
<td>文档</td>
<td>Swagger / Redoc</td>
<td>自动生成 API 文档。</td>
</tr>
<tr>
<td>部署</td>
<td>Docker / Nginx / Docker Compose</td>
<td>快速部署项目。</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="_3">📌 内置模块</h2>
<table>
<thead>
<tr>
<th>模块名</th>
<th>子模块名</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>仪表盘</td>
<td>工作台 、分析页</td>
<td>常用功能入口</td>
</tr>
<tr>
<td>系统管理</td>
<td>包含菜单、部门、岗位、角色、用户、日志、配置、公告、字典、任务等子模块</td>
<td>系统主功能</td>
</tr>
<tr>
<td>监控管理</td>
<td>在线用户、服务器监控、缓存监控</td>
<td>系统监控管理功能</td>
</tr>
<tr>
<td>公共管理</td>
<td>接口管理、文档管理</td>
<td>项目接口文档</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="_4">🍪  演示环境</h2>
<ul>
<li>演示地址：<a href="http://service.fastapiadmin.com">http://service.fastapiadmin.com</a></li>
<li>管理员账号：<code>admin</code> 密码：<code>123456</code></li>
<li>演示账号：<code>demo</code> 密码：<code>123456</code></li>
</ul>
<hr />
<h2 id="_5">👷 安装和使用</h2>
<h3 id="_6">版本说明</h3>
<table>
<thead>
<tr>
<th>类型</th>
<th>技术栈</th>
<th>版本</th>
</tr>
</thead>
<tbody>
<tr>
<td>后端</td>
<td>Python</td>
<td>3.10（大于3.10的版本, 会有兼容问题, 将来升级，暂时不考虑升级）</td>
</tr>
<tr>
<td>后端</td>
<td>FastAPI</td>
<td>0.109</td>
</tr>
<tr>
<td>前端</td>
<td>Node.js</td>
<td>&gt;= 20.0（推荐使用最新版）</td>
</tr>
<tr>
<td>前端</td>
<td>npm</td>
<td>16.14</td>
</tr>
<tr>
<td>前端</td>
<td>Vue3</td>
<td>3.3</td>
</tr>
<tr>
<td>数据库</td>
<td>MySQL</td>
<td>8.0 （推荐使用最新版）</td>
</tr>
<tr>
<td>中间件</td>
<td>Redis</td>
<td>7.0 （推荐使用最新版）</td>
</tr>
</tbody>
</table>
<hr />
<h3 id="_7">获取代码</h3>
<pre><code class="language-sh"># 克隆代码到本地
git clone https://gitee.com/tao__tao/fastapi_vue3_admin.git
或
git clone https://github.com/1014TaoTao/fastapi_vue3_admin.git
</code></pre>
<hr />
<h3 id="_8">本地后端启动</h3>
<pre><code class="language-sh">#  进入后端工程目录
cd backend
# 安装依赖
pip3 install -r requirements.txt
# 启动后端服务
python3 main.py run 
或 
python3 main.py run--env=dev 
# 生成迁移文件
python3 main.py revision &quot;初始化迁移&quot; --env=dev(不加默认为dev)
# 应用迁移
python3 main.py upgrade --env=dev(不加默认为dev)
</code></pre>
<hr />
<h3 id="_9">本地前端启动</h3>
<pre><code class="language-sh"># 进入前端工程目录
cd frontend
# 安装依赖
npm install
# 启动前端服务
npm run dev
# 构建前端, 生成 `frontend/dist` 目录
npm run build
</code></pre>
<hr />
<h3 id="_10">本地访问地址</h3>
<ul>
<li>前端地址: <a href="http://127.0.0.1:5180">http://127.0.0.1:5180</a></li>
<li>接口地址: <a href="http://127.0.0.1:8001/api/v1/docs">http://127.0.0.1:8001/api/v1/docs</a></li>
<li>管理员账号：<code>admin</code> 密码：<code>123456</code></li>
<li>演示账号：<code>demo</code> 密码：<code>123456</code></li>
</ul>
<hr />
<h3 id="docker">docker 部署</h3>
<pre><code class="language-sh"># 复制脚本 `fastapi_vue3_amdin/start.sh` 脚本文件到服务器, 并赋予执行权限
chmod +x start.sh
# 执行脚本
./start.sh
# 查看镜像:
docsker images -a
# 查看容器:
docsker compose ps
# 查看日志
docker logs -f &lt;容器名&gt;
# 服务停止
docsker compose down
# 删除镜像
docker rmi &lt;镜像名&gt;
# 删除容器
docker rm &lt;容器名&gt;
# 后端配置文件目录
fastapi_vue3_amdin/backend/env/.env.prod.py
# 前端配置文件目录
fastapi_vue3_amdin/frontend/vite.config.ts
和 
fastapi_vue3_amdin/frontend/.env.production
# 部署文件目录  
fastapi_vue3_amdin/docker-compose.yaml
和 
fastapi_vue3_amdin/devops/devops/nginx/nginx.conf

</code></pre>
<hr />
<h2 id="_11">🔧 模块展示</h2>
<table>
    <tr>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/login.png"/>登陆</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/dashboard.png"/>仪表盘</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/menu.png"/>菜单管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/dept.png"/>部门管理</td>
   </tr>
   <tr>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/position.png"/>岗位管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/role.png"/>角色管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/user.png"/>用户管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/log.png"/>日志管理</td>
   </tr>
   <tr>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/config.png"/>配置管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/online.png"/>在线用户管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/service.png"/>服务器监控</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/cache.png"/>缓存监控</td>
   </tr>
   <tr>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/job.png"/>任务管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/dict.png"/>字典管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/analysis.png"/>分析管理</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/docs.png"/>接口管理</td>
   </tr>
   </tr>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/theme.png"/>系统主题</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/help.png"/>在线文档</td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/lock.png"/>系统锁屏</td>
   </tr>
</table>

<hr />
<h2 id="_12">🙏 特别鸣谢</h2>
<p>感谢以下项目的贡献和支持，使本项目得以顺利完成：</p>
<ul>
<li><a href="https://fastapi.tiangolo.com/">FastAPI 项目</a></li>
<li><a href="https://v3.cn.vuejs.org/">Vue3 项目</a></li>
<li><a href="https://gitee.com/ktianc/kinit">KInit 项目</a></li>
<li><a href="https://gitee.com/senqi666/fastapi-vue-admin">Fastapi-Vue3-Admin 项目</a></li>
<li><a href="https://gitee.com/mizhexiaoxiao/vue-fastapi-admin">Vue-FastAPI-Admin 项目</a></li>
<li><a href="https://gitee.com/insistence2022/RuoYi-Vue3-FastAPI">RuoYi-Vue3-FastAPI 项目</a></li>
<li><a href="https://github.com/agronholm/apscheduler">APScheduler 项目</a></li>
<li><a href="https://github.com/vitejs/vite">Vite 项目</a></li>
<li><a href="https://gitee.com/youlaiorg/vue3-element-admin">Vue3-element-admin 项目</a></li>
<li><a href="https://gitee.com/kailong110120130/vue-element-plus-admin">Vue3-element-plus-admin 项目</a></li>
</ul>
<h2 id="_13">🎨 社区</h2>
<table>
    <tr>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/wechat.jpg"/></td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/group.jpg"/></td>
        <td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/static/image/wechatPay.jpg"/></td>
    </tr>
</table>

<hr />
<h2 id="star">❤️ Star 支持我</h2>
<p>如果你喜欢这个项目，请给我一个 ⭐️ Star 支持一下吧！非常感谢！</p>
<hr />
<h2 id="_14">👀 访问统计</h2>
<p><img alt="Visitor Count" src="https://profile-counter.glitch.me/1014TaoTao/count.svg" /></p>
<hr />












                
              </article>
            </div>
          
          
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
        </div>
        
          <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
  回到页面顶部
</button>
        
      </main>
      
        <footer class="md-footer">
  
    
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
    <div class="md-copyright__highlight">
      Copyright © 2022 <a href="https://github.com/1014TaoTao/fastapi_vue3_admin">Powered by 948080782x@qq.com 版权所有</a>
    </div>
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
    
    
      
      <script id="__config" type="application/json">{"base": ".", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.instant", "search.highlight", "search.suggest", "navigation.footer", "toc.integrate", "navigation.top", "content.code.copy"], "search": "assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}, "version": null}</script>
    
    
      <script src="assets/javascripts/bundle.13a4f30d.min.js"></script>
      
    
  </body>
</html>